package com.jackstraw.jack_base.datasource.mybatis.entity.po;

import com.jackstraw.jack_base.datasource.mybatis.base.entity.po.PoExample;
import com.jackstraw.jack_base.util.JsonUtil;
import com.jackstraw.jack_base.util.ObjectUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


/**
 * @author jack 945514650@qq.com
 * @since version:1.0 generatorDate:2022-05-13 22:35:17
 */
public class AaaaPoExample extends PoExample<AaaaPoExample.Criteria, AaaaPo> {

	public AaaaPoExample() {
		super();
	}

	@Override
	public void addKey(Map<String, Object> params) {
		AaaaPo po = JsonUtil.mapToBean(params, this.poClass);
		if (ObjectUtil.ObjectUtilByLang3.isNotEmpty(po)) {
			if (ObjectUtil.ObjectUtilByLang3.isNotEmpty(po.getB())) {
				this.createCriteria().andBEqualTo(po.getB());
			}
 			if (ObjectUtil.ObjectUtilByLang3.isNotEmpty(po.getA())) {
				this.createCriteria().andAEqualTo(po.getA());
			}
 		}
	}

	@Override
	protected Criteria createCriteriaInternal() {
		return new Criteria();
	}


	protected abstract static class GeneratedCriteria {
		protected List<Criterion> criteria;

		protected GeneratedCriteria() {
			super();
			criteria = new ArrayList<Criterion>();
		}

		public boolean isValid() {
			return criteria.size() > 0;
		}

		public List<Criterion> getAllCriteria() {
			return criteria;
		}

		public List<Criterion> getCriteria() {
			return criteria;
		}

		protected void addCriterion(String condition) {
			if (condition == null) {
				throw new RuntimeException("Value for condition cannot be null");
			}
			criteria.add(new Criterion(condition));
		}

		protected void addCriterion(String condition, Object value, String property) {
			if (value == null) {
				throw new RuntimeException("Value for " + property + " cannot be null");
			}
			criteria.add(new Criterion(condition, value));
		}

		protected void addCriterion(String condition, Object value1, Object value2, String property) {
			if (value1 == null || value2 == null) {
				throw new RuntimeException("Between values for " + property + " cannot be null");
			}
			criteria.add(new Criterion(condition, value1, value2));
		}

		public Criteria andAIsNull() {
			addCriterion("a is null");
			return (Criteria) this;
		}

		public Criteria andAIsNotNull() {
			addCriterion("a is not null");
			return (Criteria) this;
		}

		public Criteria andAEqualTo(Integer value) {
			addCriterion("a =", value, "a");
			return (Criteria) this;
		}

		public Criteria andANotEqualTo(Integer value) {
			addCriterion("a <>", value, "a");
			return (Criteria) this;
		}

		public Criteria andAGreaterThan(Integer value) {
			addCriterion("a >", value, "a");
			return (Criteria) this;
		}

		public Criteria andAGreaterThanOrEqualTo(Integer value) {
			addCriterion("a >=", value, "a");
			return (Criteria) this;
		}

		public Criteria andALessThan(Integer value) {
			addCriterion("a <", value, "a");
			return (Criteria) this;
		}

		public Criteria andALessThanOrEqualTo(Integer value) {
			addCriterion("a <=", value, "a");
			return (Criteria) this;
		}

		public Criteria andAIn(List<Integer> values) {
			addCriterion("a in", values, "a");
			return (Criteria) this;
		}

		public Criteria andANotIn(List<Integer> values) {
			addCriterion("a not in", values, "a");
			return (Criteria) this;
		}

		public Criteria andABetween(Integer value1, Integer value2) {
			addCriterion("a between", value1, value2, "a");
			return (Criteria) this;
		}

		public Criteria andANotBetween(Integer value1, Integer value2) {
			addCriterion("a not between", value1, value2, "a");
			return (Criteria) this;
		}


		public Criteria andBIsNull() {
			addCriterion("b is null");
			return (Criteria) this;
		}

		public Criteria andBIsNotNull() {
			addCriterion("b is not null");
			return (Criteria) this;
		}

		public Criteria andBEqualTo(Integer value) {
			addCriterion("b =", value, "b");
			return (Criteria) this;
		}

		public Criteria andBNotEqualTo(Integer value) {
			addCriterion("b <>", value, "b");
			return (Criteria) this;
		}

		public Criteria andBGreaterThan(Integer value) {
			addCriterion("b >", value, "b");
			return (Criteria) this;
		}

		public Criteria andBGreaterThanOrEqualTo(Integer value) {
			addCriterion("b >=", value, "b");
			return (Criteria) this;
		}

		public Criteria andBLessThan(Integer value) {
			addCriterion("b <", value, "b");
			return (Criteria) this;
		}

		public Criteria andBLessThanOrEqualTo(Integer value) {
			addCriterion("b <=", value, "b");
			return (Criteria) this;
		}

		public Criteria andBIn(List<Integer> values) {
			addCriterion("b in", values, "b");
			return (Criteria) this;
		}

		public Criteria andBNotIn(List<Integer> values) {
			addCriterion("b not in", values, "b");
			return (Criteria) this;
		}

		public Criteria andBBetween(Integer value1, Integer value2) {
			addCriterion("b between", value1, value2, "b");
			return (Criteria) this;
		}

		public Criteria andBNotBetween(Integer value1, Integer value2) {
			addCriterion("b not between", value1, value2, "b");
			return (Criteria) this;
		}


		public Criteria andCIsNull() {
			addCriterion("c is null");
			return (Criteria) this;
		}

		public Criteria andCIsNotNull() {
			addCriterion("c is not null");
			return (Criteria) this;
		}

		public Criteria andCEqualTo(Integer value) {
			addCriterion("c =", value, "c");
			return (Criteria) this;
		}

		public Criteria andCNotEqualTo(Integer value) {
			addCriterion("c <>", value, "c");
			return (Criteria) this;
		}

		public Criteria andCGreaterThan(Integer value) {
			addCriterion("c >", value, "c");
			return (Criteria) this;
		}

		public Criteria andCGreaterThanOrEqualTo(Integer value) {
			addCriterion("c >=", value, "c");
			return (Criteria) this;
		}

		public Criteria andCLessThan(Integer value) {
			addCriterion("c <", value, "c");
			return (Criteria) this;
		}

		public Criteria andCLessThanOrEqualTo(Integer value) {
			addCriterion("c <=", value, "c");
			return (Criteria) this;
		}

		public Criteria andCIn(List<Integer> values) {
			addCriterion("c in", values, "c");
			return (Criteria) this;
		}

		public Criteria andCNotIn(List<Integer> values) {
			addCriterion("c not in", values, "c");
			return (Criteria) this;
		}

		public Criteria andCBetween(Integer value1, Integer value2) {
			addCriterion("c between", value1, value2, "c");
			return (Criteria) this;
		}

		public Criteria andCNotBetween(Integer value1, Integer value2) {
			addCriterion("c not between", value1, value2, "c");
			return (Criteria) this;
		}


		public Criteria andDIsNull() {
			addCriterion("d is null");
			return (Criteria) this;
		}

		public Criteria andDIsNotNull() {
			addCriterion("d is not null");
			return (Criteria) this;
		}

		public Criteria andDEqualTo(String value) {
			addCriterion("d =", value, "d");
			return (Criteria) this;
		}

		public Criteria andDNotEqualTo(String value) {
			addCriterion("d <>", value, "d");
			return (Criteria) this;
		}

		public Criteria andDGreaterThan(String value) {
			addCriterion("d >", value, "d");
			return (Criteria) this;
		}

		public Criteria andDGreaterThanOrEqualTo(String value) {
			addCriterion("d >=", value, "d");
			return (Criteria) this;
		}

		public Criteria andDLessThan(String value) {
			addCriterion("d <", value, "d");
			return (Criteria) this;
		}

		public Criteria andDLessThanOrEqualTo(String value) {
			addCriterion("d <=", value, "d");
			return (Criteria) this;
		}

		public Criteria andDIn(List<String> values) {
			addCriterion("d in", values, "d");
			return (Criteria) this;
		}

		public Criteria andDNotIn(List<String> values) {
			addCriterion("d not in", values, "d");
			return (Criteria) this;
		}

		public Criteria andDBetween(String value1, String value2) {
			addCriterion("d between", value1, value2, "d");
			return (Criteria) this;
		}

		public Criteria andDNotBetween(String value1, String value2) {
			addCriterion("d not between", value1, value2, "d");
			return (Criteria) this;
		}

		public Criteria andDLike(String value) {
			addCriterion("d like", value, "d");
			return (Criteria) this;
		}

		public Criteria andDNotLike(String value) {
			addCriterion("d not like", value, "d");
			return (Criteria) this;
		}

		public Criteria andDLikeInsensitive(String value) {
			addCriterion("upper(d) like", value.toUpperCase(), "d");
			return (Criteria) this;
		}


		public Criteria andEIsNull() {
			addCriterion("e is null");
			return (Criteria) this;
		}

		public Criteria andEIsNotNull() {
			addCriterion("e is not null");
			return (Criteria) this;
		}

		public Criteria andEEqualTo(String value) {
			addCriterion("e =", value, "e");
			return (Criteria) this;
		}

		public Criteria andENotEqualTo(String value) {
			addCriterion("e <>", value, "e");
			return (Criteria) this;
		}

		public Criteria andEGreaterThan(String value) {
			addCriterion("e >", value, "e");
			return (Criteria) this;
		}

		public Criteria andEGreaterThanOrEqualTo(String value) {
			addCriterion("e >=", value, "e");
			return (Criteria) this;
		}

		public Criteria andELessThan(String value) {
			addCriterion("e <", value, "e");
			return (Criteria) this;
		}

		public Criteria andELessThanOrEqualTo(String value) {
			addCriterion("e <=", value, "e");
			return (Criteria) this;
		}

		public Criteria andEIn(List<String> values) {
			addCriterion("e in", values, "e");
			return (Criteria) this;
		}

		public Criteria andENotIn(List<String> values) {
			addCriterion("e not in", values, "e");
			return (Criteria) this;
		}

		public Criteria andEBetween(String value1, String value2) {
			addCriterion("e between", value1, value2, "e");
			return (Criteria) this;
		}

		public Criteria andENotBetween(String value1, String value2) {
			addCriterion("e not between", value1, value2, "e");
			return (Criteria) this;
		}

		public Criteria andELike(String value) {
			addCriterion("e like", value, "e");
			return (Criteria) this;
		}

		public Criteria andENotLike(String value) {
			addCriterion("e not like", value, "e");
			return (Criteria) this;
		}

		public Criteria andELikeInsensitive(String value) {
			addCriterion("upper(e) like", value.toUpperCase(), "e");
			return (Criteria) this;
		}

	}

	public static class Criteria extends GeneratedCriteria {

		protected Criteria() {
			super();
		}
	}
}